package mysql8学习.高级.第13章_事务的基本知识;

/**
 * 3.3 SQL中的四种隔离级别
 * 上面介绍了几种并发事务执行过程中可能遇到的一些问题，这些问题有轻重缓急之分，
 * 我们给这些问题按照严重性来排一下序:
 * 脏写 > 脏读 > 不可重复读 > 幻读
 *
 *
 * 我们愿意舍弃一部分隔离性来换取一部分性能在这里就体现在:
 * 设立一些隔离级别，隔离级别越低，并发问题发 生的就越多。
 * SQL标准 中设立了4个隔离级别:
 * ● READ UNCOMMITTED: 读未提交，
 *   在该隔离级别，所有事务都可以看到其他未提交事务的执行结果。
 *   不能避免脏读、不可重复读、幻读。
 * ● READ COMMITTED: 读已提交，它满足了隔离的简单定义:
 *   一个事务只能看见已经提交事务所做的改变。
 *   这是大多数数据库系统的默认隔离级别(但不是MySQL 默认的)。
 *   可以避免脏读,但不可重复读、幻读问题仍然存在。
 *   这是oracle的默认隔离级别。
 * ● REPEATABLE READ:可重复读,
 *   事务A在读到一条数据之后，此时事务B对该数据进行了修改并提交，
 *   那么事务A再读该数据，读到的还是原来的内容。
 *   可以避免脏读、不可重复读，但幻读问题仍然存在。
 *   这是MySQL的默认隔离级别。
 * ● SERIALIZABLE :可串行化，确保事务可以从一个表中读取相同的行。
 *   在这个事务持续期间，禁止其他事务对该表执行插入、更新和删除操作。
 *   所有的并发问题都可以避免，但性能十分低下。
 *   能避免脏读、不可重复读和幻读。
 *
 * oracle只支持 READ COMMITTED 和 SERIALIZABLE
 * MySQL都支持 但是 MySQL的 REPEATABLE READ 就可以解决幻读
 *
 */
public class C3_SQL的隔离级别 {
}

